#!/usr/bin/env node

const { spawn } = require('child_process');
const { execSync } = require('child_process');

console.log('🔐 Auth.ejs Google OAuth 测试助手');
console.log('================================');
console.log('');

// 检查环境变量
require('dotenv').config();
const clientId = process.env.GOOGLE_CLIENT_ID;
const clientSecret = process.env.GOOGLE_CLIENT_SECRET;

console.log('📋 环境配置检查：');
if (clientId && clientSecret) {
    console.log('   ✅ 环境变量配置正常');
    console.log(`   Client ID: ${clientId.substring(0, 20)}...`);
} else {
    console.log('   ❌ 环境变量缺失，请配置 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET');
    process.exit(1);
}

console.log('');
console.log('🚀 启动开发服务器...');
console.log('');

// 启动开发服务器
const server = spawn('npm', ['run', 'dev'], {
    stdio: ['inherit', 'inherit', 'inherit'],
    shell: true
});

// 等待服务器启动
setTimeout(() => {
    console.log('');
    console.log('🌐 准备打开认证测试页面...');
    console.log('');
    console.log('📋 测试页面信息：');
    console.log('   URL: http://localhost:3379/test/auth');
    console.log('   功能: EJS模板认证页面');
    console.log('   包含: Google OAuth + 本地认证');
    console.log('');
    console.log('🔍 调试步骤：');
    console.log('   1. 打开浏览器开发者工具 (F12)');
    console.log('   2. 查看 Console 标签的初始化日志');
    console.log('   3. 点击 Google 登录按钮');
    console.log('   4. 检查是否有 "🔔 收到Google登录回调:" 日志');
    console.log('   5. 如果卡住，检查 Network 标签的请求状态');
    console.log('');
    
    // 尝试打开浏览器
    try {
        const platform = process.platform;
        const url = 'http://localhost:3379/test/auth';
        
        if (platform === 'darwin') {
            execSync(`open "${url}"`);
        } else if (platform === 'win32') {
            execSync(`start "${url}"`);
        } else {
            execSync(`xdg-open "${url}"`);
        }
        
        console.log('✅ 已尝试在默认浏览器中打开测试页面');
        console.log('   如果浏览器未自动打开，请手动访问: http://localhost:3379/test/auth');
    } catch (error) {
        console.log('⚠️ 无法自动打开浏览器，请手动访问: http://localhost:3379/test/auth');
    }
    
    console.log('');
    console.log('💡 如果遇到问题：');
    console.log('   • 确保已清除浏览器缓存 (Ctrl+Shift+R)');
    console.log('   • 尝试隐私/无痕模式');
    console.log('   • 检查 Google Cloud Console 配置');
    console.log('   • 查看浏览器控制台错误信息');
    console.log('');
    console.log('🛑 按 Ctrl+C 停止服务器');
    console.log('');
}, 3000);

// 优雅退出处理
process.on('SIGINT', () => {
    console.log('\n🛑 正在停止服务器...');
    server.kill('SIGINT');
    process.exit(0);
});

server.on('exit', (code) => {
    console.log(`\n📊 服务器已退出，代码: ${code}`);
    process.exit(code);
});

server.on('error', (err) => {
    console.error('\n❌ 启动服务器失败:', err.message);
    process.exit(1);
}); 